先看保护,只开了NX
1 | Arch: amd64-64-little |
程序一开始malloc了四次
在内存中的结构如下
我们看到这里有个溢出
因为上面申请了8个byte,这里可以输入0x1000,那么我们可以通过第一个溢出覆盖603070指针为got表。下次再fgets就可以写got表了,因为最后会调用exit,覆盖exit的got就行
其实这题的目标是直接返回到这个函数就行了
要进入漏洞函数,需要contracts为0x1100,当他为这个值我们再利用就行
我这里本地新建了个hell文件做测试,内容是flag{test}
代码如下:
1 | # -*- coding: utf-8 -*- |